iT邦幫忙

2

ChatGPT 資料庫整合應用

  • 分享至 

  • xImage
  •  

前言

ChatGPT或者說LLM最普遍的應用就是製作各種聊天機器人(ChatBot),ChatBot要如何進一步與內部資料庫整合,是邁向企業應用的重要基石。

ChatBot 類型與對應技術

ChatBot 開發的方式可分為:

  1. 利用ChatGPT本身擁有的知識(模型),找到答案。若需要探索企業專屬的產業知識,例如金融,就必須【微調】(Fine tuning)或自建模型。
  2. 語意搜尋(Semantic search):將各式文件,例如PDF檔,轉換成詞嵌入(Embedding),利用向量比對相似度的方式找出與提示(prompt)有關的答案。為了讓提示更精準,可以使用RAG(Retrieval-Augmented Generation)架構,使語意搜尋更準確。
  3. 資料庫整合:例如訂房網站要提供使用者訂房,網站/ChatBot接收到訂房資訊後,要先至後台系統查詢資料庫,確認房間已滿或還有適當房型,後續再進行房間保留,更新資料庫,這類應用在企業內非常普遍,通常需與ERP或CRM系統整合,Google DialogFlow 可滿足此類ChatBot需求,現若改用ChatGPT,要如何作呢? 後面我們將介紹Instructor套件,實現此一功能。

需求

以旅館業訂房網站為例,使用者以自然語言的方式輸入訂房資訊(提示),ChatBot要能從提示中萃取出關鍵資訊,譬如提示為【我要在2024年1月24日訂雙人房一間,共訂兩天】,希望得到的關鍵資訊如下:

  • 日期:2024/1/24
  • 房型:雙人房
  • 天數:2
    ChatBot根據上述資訊,查詢資料庫,確定是否有空房(Available),再作後續房間保留(Reservation)或回答【房間已滿】的訊息。

環境建置

以Python環境開發,需安裝以下套件:

pip install openai instructor pydantic

實作

程式如下:

  1. 引用套件。
import instructor
from openai import OpenAI
from pydantic import BaseModel, Field
from datetime import date, datetime, time, timedelta
  1. 建立 ChatGPT Client。
client = instructor.patch(OpenAI())
  1. 建立要萃取的關鍵資訊類別,遵從PyDantic格式定義。
class HotelBooking(BaseModel):
    place: str
    date: date
    room_type: str
    no_of_rooms: int
    no_of_days: int
  1. 定義ChatGPT問答函數,使用GPT 3.5模型即可。
def get_response(string) -> HotelBooking:
    return client.chat.completions.create(
        model="gpt-3.5-turbo-0613",
        response_model=HotelBooking,
        messages=[
            {
                "role": "user",
                "content": f"Get Hotel Booking information for {string}",
            },
        ],
    )
  1. 輸入提示(I want to order a twin at taipei at jan. 24 2024 for 3 days),取得JSON格式的關鍵資訊。
response = get_response("I want to order a twin at taipei at jan. 24 2024 for 3 days")
print(response.model_dump_json(indent=2))
  1. 將上述程式存成booking.py,執行程式。
python booking.py
  1. 輸出:可以抓到地點、日期、房型、訂房數、日數。
{
  "place": "taipei",
  "date": "2024-01-24",
  "room_type": "twin",
  "no_of_rooms": 1,
  "no_of_days": 3
}
  1. 系統發現日期格式錯誤,但仍可矯正後輸出。
pydantic_core._pydantic_core.ValidationError: 1 validation error for HotelBooking
date
  Input should be a valid date or datetime, invalid character in year [type=date_from_datetime_parsing, input_value='jan . 24 2024', input_type=str]
    For further information visit https://errors.pydantic.dev/2.5/v/date_from_datetime_parsing

結論

透過簡單的程式碼,我們就完成關鍵資訊的萃取,後續如何查詢/更新資料庫,或與Line整合,就請讀者自由發揮了,也歡迎讀者批評指教。程式可自【ChatGPT 完整解析:API 實測與企業應用實戰】範例程式下載,本文程式檔放在Extra目錄。

工商廣告:)

影音課程:

開發者必學:OpenAI API應用與開發
ChatGPT企業實踐指南 | 技術透析與整合應用
深度學習PyTorch入門到實戰應用

書籍:

ChatGPT 完整解析:API 實測與企業應用實戰
Scikit-learn 詳解與企業應用
開發者傳授 PyTorch 秘笈
深度學習 -- 最佳入門邁向 AI 專題實戰


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言